home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2posx10.zoo / m2posix.10 / src / pstorage.ipp < prev    next >
Encoding:
Modula Implementation  |  1993-12-02  |  3.6 KB  |  179 lines

  1. IMPLEMENTATION MODULE pSTORAGE;
  2. __IMP_SWITCHES__
  3. #ifdef HM2
  4. #ifdef __LONG_WHOLE__
  5. (*$!i+: Modul muss mit $i- uebersetzt werden! *)
  6. (*$!w+: Modul muss mit $w- uebersetzt werden! *)
  7. #else
  8. (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
  9. (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
  10. #endif
  11. #endif
  12.  
  13. (*
  14. A portable Storage Module.
  15.  
  16. "(*Addr:= NIL;*)" means: "Addr:= NIL isn't necessary"
  17.  
  18. UK __DATE__ __TIME__
  19. modified by hk
  20. *)
  21.  
  22.  
  23. FROM SYSTEM IMPORT ADDRESS;
  24.  
  25. #ifdef LPRM2
  26. IMPORT Heap;
  27. #elif (defined FTLM2)
  28.  
  29. #else
  30. IMPORT Storage;
  31. #endif
  32.  
  33. #if (defined ANAM2) || (defined XAM2)
  34. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  35.  
  36. VAR Success: BOOLEAN;
  37.  
  38. BEGIN
  39.   Storage.CondAllocate(Addr,Size,Success);
  40.   IF NOT Success THEN
  41.     Addr:= NIL;
  42.   END;
  43. END ALLOCATE;
  44.  
  45. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  46. BEGIN
  47.   Storage.DEALLOCATE(Addr,Size);
  48. END DEALLOCATE;
  49.  
  50. #elif (defined TDIM2)
  51. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  52. BEGIN
  53.   Storage.ALLOCATE(Addr,Size);
  54. END ALLOCATE;
  55.  
  56. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  57. BEGIN
  58.   Storage.DEALLOCATE(Addr,Size);
  59. (*Addr:= NIL;*)
  60. END DEALLOCATE;
  61.  
  62. #elif (defined FSTM2)
  63. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  64. BEGIN
  65.   Storage.ALLOCATE(Addr,Size);
  66. END ALLOCATE;
  67.  
  68. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  69. BEGIN
  70.   Storage.DEALLOCATE(Addr,Size);
  71. (*Addr:= NIL;*)
  72. END DEALLOCATE;
  73.  
  74. #elif (defined MM2)
  75. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  76. BEGIN
  77.   Storage.ALLOCATE(Addr,Size);
  78. END ALLOCATE;
  79.  
  80. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  81. BEGIN
  82.   Storage.DEALLOCATE(Addr,Size);
  83. (*Addr:= NIL;*)
  84. END DEALLOCATE;
  85.  
  86. #elif (defined LPRM2)
  87. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  88. BEGIN
  89.   Addr:= NIL;
  90.   Heap.Allocate(Addr,Size);
  91. END ALLOCATE;
  92.  
  93. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  94. BEGIN
  95.   Heap.Deallocate(Addr,Size);
  96.   Addr:= NIL;
  97. END DEALLOCATE;
  98.  
  99. #elif (defined SPCM2)
  100. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  101. BEGIN
  102.   Storage.ALLOCATE(Addr,Size);
  103. END ALLOCATE;
  104.  
  105. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  106. BEGIN
  107.   Storage.DEALLOCATE(Addr); (* ! *)
  108. END DEALLOCATE;
  109.  
  110. #elif (defined HM2) || (defined XHM2)
  111. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  112. BEGIN
  113.   Storage.ALLOCATE(Addr,Size);
  114. END ALLOCATE;
  115.  
  116. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  117. BEGIN
  118.   Storage.DEALLOCATE(Addr,Size);
  119. END DEALLOCATE;
  120.  
  121. #elif (defined LM2)
  122. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  123. BEGIN
  124.   IF NOT Storage.Available(Size) THEN
  125.     Addr:= NIL;
  126.   ELSE
  127.     Storage.ALLOCATE(Addr,Size);
  128.   END;
  129. END ALLOCATE;
  130.  
  131. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  132. BEGIN
  133.   Storage.DEALLOCATE(Addr,Size);
  134. (*Addr:= NIL;*)
  135. END DEALLOCATE;
  136.  
  137. #elif (defined TSM2_1)
  138. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  139. BEGIN
  140.   IF NOT Storage.Available(Size) THEN
  141.     Addr:= NIL;
  142.   ELSE
  143.     Storage.ALLOCATE(Addr,Size);
  144.   END;
  145. END ALLOCATE;
  146.  
  147. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  148. BEGIN
  149.   Storage.DEALLOCATE(Addr,Size);
  150. (*Addr:= NIL;*)
  151. END DEALLOCATE;
  152.  
  153. #elif (defined TSM2_2)
  154. PROCEDURE ALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  155. BEGIN
  156.   IF NOT Storage.FarAvailable(Size) THEN
  157.     Addr:= NIL;
  158.   ELSE
  159.     Storage.FarALLOCATE(Addr,Size);
  160.   END;
  161. END ALLOCATE;
  162.  
  163. PROCEDURE DEALLOCATE(VAR Addr: ADDRESS; Size: SIZETYPE);
  164. BEGIN
  165.   Storage.FarDEALLOCATE(Addr,Size);
  166. (*Addr:= NIL;*)
  167. END DEALLOCATE;
  168. #endif
  169.  
  170. #ifdef TDIM2
  171. CONST HEAPSIZE = 10000H; (* 64kB *)
  172.  
  173. BEGIN
  174.  IF NOT Storage.CreateHeap(HEAPSIZE,TRUE) THEN
  175.    HALT;
  176.  END;
  177. #endif
  178. END pSTORAGE.
  179.